1. Field of the Invention
The present invention generally relates to computer software, and, more specifically, to a recommendation system for protecting user privacy.
2. Description of the Related Art
A wide variety of software applications are currently available to end-users, including computer-aided design (CAD) applications, computer graphics applications, animation applications, word processing applications, and computer programming applications, among others. Many of these software applications allow an end-user to interact with the software application via a graphical user interface (GUI). Conventional GUIs often provide the end-user with access to a set of commands that can be used to perform various operations within a workspace generated by the software application. For example, a CAD application may provide a set of drawing commands that can be used to create complex designs within a drawing workspace generated by the CAD application. In such a case, each command may be represented within the GUI with an icon that the end-user can select in order to execute the command.
Despite advances in application design that allow end-users to more easily operate complex applications, learning how to use such applications can still be problematic. More complex applications, such as the CAD application described above, often include thousands of commands to choose from and many ways for an end-user to combine these commands into workflows. Further, the number of commands tends to increase year after year. While the growth of commands increases a software application's capabilities, the quantity of commands presents a challenge for users that are attempting to learn how to use the software application. In particular, a user's lack of awareness of useful commands can decrease the user's efficiency with the software application.
In an effort to introduce users to unknown commands, many applications include content such as a “tip-of-the-day.” However, although this type of help content may expose a user to new commands, the commands presented to the user may be irrelevant to the user's current task, making it less likely that the user will integrate the new commands into his or her workflow.
In order to suggest more relevant commands to a user, some software applications transmit the user's preferences to a server. The server then analyzes the user's preferences in order to provide suggestions that may be beneficial to the user. Such systems generally require a user to “opt-in” before recommendations are provided. However, due to privacy concerns and/or confidentiality requirements, many users are reluctant to opt-in to such recommendation systems and allow user activity data to be provided to a server that is controlled by a third-party. Further, even if a user chooses to opt-in to the recommendation system, the user is unable to receive recommendations unless the user is connected to the Internet. Consequently, many users are unable to receive recommendations from such systems, preventing the users from learning useful commands that are offered by the application.
As the foregoing illustrates, there is a need in the art for a more effective way for privacy-sensitive and/or offline users to receive command recommendations when interacting with a software application.